package com.yuw.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class TestDriver {
    public static void main(String[] args) {
        System.out.println("Hello World!");
        test01();
    }

    /**
     * java连接数据库测试
     */
    private static void test01() {
        try {
            // (1) 注册加载数据库驱动
            // 数据库驱动主类的包路径名，使用反射加载
            String strDirverName = "oracle.jdbc.OracleDriver";
            Class.forName(strDirverName);
            // (2) 获取数据库连接对象
            // 数据库连接各个属性
            // url连接串
            // 解析连接串：@前面固定写法；@后面是数据库服务器的ip地址或主机名；
            // 1521 数据库服务器监听的端口号；orcl：数据库名数据实例名
            String strUrl = "jdbc:oracle:thin:@localhost:1521/pdbyuw201810";
            // 用户名
            String strUserName = "yuw20181001";
            // 密码
            String strUserPsw = "oracle";
            // 从驱动管理类中获取指定参数的数据库连接对象
            Connection conn = DriverManager.getConnection(strUrl, strUserName, strUserPsw);
            // (3) 获取statement执行器，执行sql语句
            Statement st = conn.createStatement();
            // (4) 获取statement执行结果集resultset，并解析
            // sql语句
            String strSql = "select * from admininfo ";
            // 执行查询操作
            ResultSet rs = st.executeQuery(strSql);
            // 解析结果集rs对象
            // next作用是类似于游标的作用，判定有没有下一行数据记录，如果有，则将游标向下移动一行，并返回判定结果true或false
            while (rs.next()) {
                // 取出当前游标中的数据记录
                System.out.println("姓名：" + rs.getObject(2) + ";性别：" + rs.getObject("adminsex"));
            }

            // (5) 关闭资源 注意在没有操作完resultset之前不要关闭连接资源，因为已关闭资源就无法获取数据了；
            // 也就是说，解析resultset需要保持数据库连接
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }


}
